Disambiguating point-of-sale data through item indexing

ABSTRACT

Methods, apparatus, and computer-readable medium can disambiguate point-of-sale data. One method receives one or more measured values. Each measured value indicating a quantity of sales allocated to a respective individual item. The method also receives an unallocated value indicating a quantity of sales allocated to an undifferentiated grouping of a plurality of the individual items. The method calculates, for each individual item of the plurality of the individual items associated with the undifferentiated grouping, a fraction of the undifferentiated grouping attributable to the respective individual item, and estimates a total sales value for at least one of the plurality of the individual items, based at least in part upon a respective measured value and a respective fraction of the undifferentiated grouping attributable to the respective individual item.

CROSS-REFERENCE TO RELATED APPLICATION

This application is a continuation of, and claims priority under 35U.S.C. §120 to application Ser. No. 11/616,700 entitled “DISAMBIGUATINGPOINT-OF-SALE DATA THROUGH ITEM INDEXING”, filed on Dec. 27, 2006, nowissued as U.S. Pat. No. ______, which is a continuation of, and claimsthe priority benefit, under 35 U.S.C. §120, of U.S. application Ser. No.10/434,795, entitled “DISAMBIGUATING POINT-OF-SALE DATA THROUGH ITEMINDEXING” filed on May 9, 2003, now issued as U.S. Pat. No. 7,292,991.The subject matter of these earlier filed applications are herebyincorporated by reference.

TECHNICAL FIELD

The present invention relates generally to the fields of demandforecasting and production planning. More specifically, the presentinvention relates to techniques for increasing forecast accuracy bydisambiguating point-of-sale data.

BACKGROUND OF THE INVENTION

Demand forecasting is an essential component of production planning.Nowhere is this statement more true than in the perishable foodindustry. Bakeries, delis, doughnut shops, supermarkets, and the like,must accurately predict customer demand in order to produce the rightamount of goods to be sold each day. Forecasts that are too hightypically result in wasted goods. Forecasts that are too low oftenresult in lost sales and customer annoyance.

Various software programs, such as Fresh Market Manager™ (FMM),available from Park City Group, Inc., have addressed the need for demandforecasting. The FMM forecasting engine predicts how many of a givenitem is required each day based on historical point-of-sale data,adjusted for influences such as holidays, weather, seasons, andcompetitor activity.

Unfortunately, the forecasts produced by these software programs areonly as accurate as the data provided to them. One difficulty inobtaining accurate data is due to the fact that the sale of certainitems can be recorded in different ways by a point-of-sale device (e.g.,cash register). For example, certain individual items, such as chocolatechip cookies, can be “rung up” as miscellaneous or variety items, e.g.,“cookies” or “miscellaneous bakery.” However, the forecasting enginedoes not need to forecast how many miscellaneous bakery items are neededin a given day. Rather, it must determine how many chocolate chipcookies will be required to satisfy customer demand.

Point-of-sale data that include both individual item sales andundifferentiated, miscellaneous or variety item sales are ambiguous andtypically result in inaccurate forecasts. Accordingly, a need exists fora technique for disambiguating point-of-sale data to enhance forecastingaccuracy.

SUMMARY OF THE INVENTION

A point-of-sale interface receives sales quantities for a number ofindividual items from a point-of-sale feed. The point-of-sale interfacealso receives sales quantities for a miscellaneous group item thatincludes undifferentiated sales of one or more of the individual items.Optionally, the point-of-sale interface excludes sales marked as specialorders from the sales quantities.

An item indexer calculates an item index for each individual itemcomprising a fraction of the miscellaneous group item sales attributableto the individual item. In one embodiment, the item index is calculatedby determining a quantity of the individual item produced but notaccounted for in the sales for the individual item and anynon-point-of-sale transfers (e.g., invoice orders, shrink/waste), anddividing the quantity of the individual item produced but not accountedfor by a sum of all of the individual items produced but not accountedfor in the sales for the individual items and any non-point-of-saletransfers.

A sales disambiguator computes a revised sales quantity for eachindividual item using the item index and the sales for the miscellaneousgroup item and the individual item. In one embodiment, the revised salesquantity is calculated by adding the original sales quantity for theindividual item to a product of the item index for the individual itemand the point-of-sale quantity for the miscellaneous group item.

The sales disambiguator provides the revised sales quantities for theIndividual items to a forecasting system, resulting in a more accurateforecast than can be had by relying on the original sales quantities.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a block diagram of a conventional system for forecasting andproduction planning;

FIG. 2 is a block diagram of a point-of-sale (POS) feed;

FIG. 3 is a block diagram of a forecasting and production planningsystem according to an embodiment of the invention;

FIG. 4 is a block diagram of a POS interface;

FIG. 5 is a block diagram of an item indexer.

FIG. 6 is a dataflow diagram showing the creation of item indices;

FIG. 7 is a dataflow diagram showing the creation of disambiguated salesquantities based on the item indices;

FIG. 8 is a table comparing disambiguated sales quantities withestimated quantities using a conventional approach; and

FIG. 9 is a flowchart of a method for disambiguating point-of-sale datato increase forecasting accuracy.

DETAILED DESCRIPTION

Reference is now made to the figures in which like reference numeralsrefer to like elements. For clarity, the first digit of a referencenumeral indicates the figure number in which the corresponding elementis first used.

In the following description, numerous specific details of programming,software modules, user selections, network transactions, databasequeries, database structures, etc., are provided for a thoroughunderstanding of the embodiments of the invention. However, thoseskilled in the art will recognize that the invention can be practicedwithout one or more of the specific details, or with other methods,components, materials, etc.

In some cases, well-known structures, materials, or operations are notshown or described in detail in order to avoid obscuring aspects of theinvention. Furthermore, the described features, structures, orcharacteristics may be combined in any suitable manner in one or moreembodiments.

In a conventional forecasting and production planning system 100,illustrated in FIG. 1, a forecasting engine 102 receives historicalsales data 104 directly from a point-of-sale (POS) feed 106. The POSfeed 106 may be implemented on a network server, which receives dailysales or transaction-level sales for one or more products from a numberof POS devices 108 (e.g., cash registers). The POS feed 106 may beaccessible, for example, through a local area network (LAN) or theInternet.

The forecasting engine 102 uses the historical sales data 104 togenerate a forecast 110 of consumer demand for each product. Theforecasting engine 102 may refine the forecast 110 using variousexternal data 112, such as information regarding holidays, weather,seasons, competitor activity, etc.

A production planning engine 114 uses the forecast 110 to create a plan116 for producing a sufficient quantity of each product to satisfy theforecasted demand. Depending on the industry, the production plan 116may include, for example, a list of required ingredients, a laborschedule, etc.

A production facility 118, such as a bakery or deli, uses the productionplan 116 to produce the forecasted quantities of products, which arethen inventoried and sold in due course. A cash register or other POSdevice 108 records the daily number of sales of each product andperiodically sends the sales quantities to the POS feed 106 for futureaccess by the forecasting engine 102.

Referring to FIG. 2, a typical POS feed 106 provides daily ortransaction-level sales 202 for a number of “individual” items, i.e.,items whose sale can be specifically recorded and for which a specificforecast of demand is needed. An example of an individual item is achocolate chip cookie, since a POS device 106 may have a designated codeor button for recording the sale, and a bakery needs to know how manychocolate chip cookies to produce each day. In some cases, an individualitem may include a group of other individual items sold as a unit, e.g.,a cookie tin, since a forecast 110 of the number of cookie tins toproduce in a given day may be desirable.

The POS feed 106 may also provide daily or transaction-level sales 204for one or more “miscellaneous group” items. Many POS devices 106 allowsales of Individual items to be recorded under “miscellaneous” or“variety” designations. This can be helpful to a check-out clerk whodoes not know the specific code for an individual item. For example, achocolate chip cookie may be rung up as a “cookie” or as a“miscellaneous bakery” item. This is also required when a group of itemscan only be sold using a single code. For example, varieties of bagels(blueberry bagel, onion bagel, plain bagel, etc.) may only be sold usinga ‘Bagel’ code.

However, the existence of miscellaneous group items on a cash registeris problematic to forecasting and production planning. Because sales ofmiscellaneous group items comprise undifferentiated sales of one or moreof the individual items, the resulting historical sales data 104 areambiguous. For example, as shown in FIG. 2, sixty cookies were rung upas a generic “cookie” item, as opposed to the particular variety ofcookie, which represents almost two-thirds of the reported sales.

A conventional forecasting engine 102 might estimate the miscellaneouscookie sales attributable to the individual varieties based on therelative proportions of the individual item sales quantities 202.However, such an estimate can be very inaccurate. For example, supposethat, of the sixty generic cookie sales, fifty were oatmeal cookies. Aforecast 110 based on a proportional allocation of the miscellaneousgroup item sales would be inaccurately weighted to the other varieties.

FIG. 3 is a block diagram of a forecasting and production planningsystem 300 according to an embodiment of the invention that solves theaforementioned problems and disadvantages. A point-of-sale (POS)interface 302 receives the historical sales data 104 from the POS feed106. The historical sales data 104 includes individual and miscellaneousgroup item sales quantities 202, 204 for the same particular timeperiod, such as a day or a portion of a day.

As described below, the POS interface 302 may optionally include logicfor scrubbing, removing, or otherwise blocking certain types of data.For example, special orders are likely to be one-time events. Hence, thePOS interface 302 may automatically exclude sales quantities 202, 204marked as special orders, generating scrubbed sales data 304.

An item indexer 306 receives the scrubbed sales data 304 and creates anitem index 308 for each individual item. As explained in greater detailhereafter, an item index 308 is a fraction or percentage contribution ofan individual item to the sales of an associated miscellaneous groupitem. In one embodiment, the item indexer 306 relies on production data310 from the production facility 118 to create the indices 308.

A sales disambiguator 312 uses the item indices 308 and the scrubbedsales data 304 to generate disambiguated or revised sales quantities314, representing the actual quantity of each product sold. Thedisambiguated sales quantities 314 may then be fed to the forecastingengine 102 to provide a more accurate forecast 316 of demand to theproduction planning engine 114.

Both the forecasting and production planning engines 102, 114 may beimplemented using components of an available software package, such asFresh Market Manager™ (FMM), sold by Park City Group, Inc., of ParkCity, Utah. However, the use of other forecasting and productionplanning systems are contemplated within the scope of the invention.Furthermore, any of the modules, engines, components, etc., describedherein may be implemented using a suitable combination of hardware,software, and/or firmware known to those of ordinary skill in the art.

FIG. 4 illustrates an optional data-scrubbing function of the POSinterface 302. As noted, historical sales data 104 may include salesquantities 202, 204 for individual and miscellaneous group items. In oneembodiment, certain sales quantities 202, 204 may be tagged or marked asa “special order,” i.e., an order placed and/or fulfilled outside of theusual routine, possibly for customized products, that is not likely torecur with any degree of predictability. An example of a special orderat a bakery may be three-dozen red sugar cookies to celebrate theSuperbowl victory of Tampa Bay. Any suitable marking or tagging methodmay be used within the scope of the invention, such as an eXtensibleMarkup Language (XML) tag or the like.

Special orders are likely to be one-time events, which makes them oflittle value from a forecasting perspective. Accordingly, the POSInterface 302 identifies sale quantities 202, 204 marked as specialorders. The marked sales quantities 202, 204 are then scrubbed, removed,masked, or otherwise excluded by the POS interface 302. The resultingscrubbed sales data 304 may then be provided to the item indexer 306 andsales disambiguator 312 as described above.

Of course, the data-scrubbing function of the POS interface 302 may beconfigured in other ways and/or disabled by an operator. Moreover, inalternative embodiments, the item indexer 306 and/or the salesdisambiguator 312 may perform the data-scrubbing function.

FIG. 5 illustrates further details of item indexer 306. As noted above,the item indexer 306 receives the scrubbed sales data 304 and theproduction data 310. In one embodiment, the production data 310includes, for each individual item, a production quantity 502, ashrink/waste quantity 504, and an invoice order quantity 506. Theproduction quantity 502 is the quantity of each item produced, while theshrink/waste quantity 504 represents the quantity of each item that wasdiscarded either prior to or after packaging.

The invoice order quantity 506 corresponds to the quantity of each itemthat was sold by an invoice order, as opposed to a retail,over-the-counter sale. An invoice order differs from a special order inthat an invoice order typically occurs with predicable frequency.Moreover, an invoice order usually pertains to standard products, e.g.,three-dozen blueberry bagels.

The item indexer 306 uses the production data 310, including theproduction quantities 502, shrink/waste quantities 504, and/or invoiceorder quantities 506, to generate an item index 308 for each individualitem. In the depicted embodiment, an item index 308 is a number betweenzero and one, and represents fraction or percentage contribution of anindividual item to the quantity sales 204 of an associated miscellaneousgroup item (e.g., “cookies”).

One algorithm for calculating the item indices is 308 set forth in thefollowing pseudocode. Those of skill in the art will recognize that thealgorithm may be implemented using any conventional programminglanguage, such as C++. Java, or the like.

For Each Miscellaneous Group Item:

 Sum = 0  For each Individual Item:   Misc. Net Quantity of IndividualItem (MNQ) = Production Total −   Shrink/Waste Total − Invoice OrdersTotal − Individual Item Sales   Total   Sum = Sum + MNQ  End for(Individual Item)  For each individual Item:   Index = MNQ / Sum  Endfor (Individual Item) End for (Miscellaneous Group Item)

FIG. 6 illustrates the above-identified algorithm in connection withsample data. For simplicity, only a single miscellaneous group item isused in this example. However, those of skill in the art will recognizethat the techniques disclosed herein may be used for multiplemiscellaneous group items.

Initially, the item indexer 306 subtracts the shrink/waste quantities504, invoice order quantities 506, and individual item sales quantities202 from the production quantities 502 for each individual item. Theresulting figure is a “miscellaneous net quantity” (MNQ) 602 of eachindividual item that was not accounted for in the individual item salesquantities 202 or by non-point-of-sale transfers (e.g., invoice orders,shrink/waste).

While determining the MNQ 602 for each individual item, a running sum604 of the MNQs for all of the individual items is made. The item index308 for a particular individual item is then calculated by dividing theMNQ 602 for that item by the MNQ sum 604 for all of the individualitems.

In the depicted example, 100 chocolate chip cookies were produced, ofwhich 20 were discarded, none were sold by invoice order, and 30 weresold at the cash register. Hence, 50 chocolate chip cookies are notaccounted for (the MNQ 602). The sum of the MNQs 602 for all cookievarieties is 100. Accordingly, the item index 308 for the chocolate chipcookies, as a percentage or fraction of the sales quantities 204 for the“cookies” miscellaneous group item is 0.5.

Referring to FIG. 7, the sales disambiguator 312 uses the item indices308 to calculate disambiguated sales quantities 314 for each of theindividual items. With respect to each individual item, the salesdisambiguator 312 adds the sales quantity 202 for the individual item toa product of the item index 308 for the individual item and the salesquantity 204 for the associated miscellaneous group item. After all ofthe disambiguated sales quantities 314 are calculated, they are providedto the forecasting engine 102.

In the illustrated example, the item index 308 for chocolate chipcookies is 0.5. In addition, the sales quantity 204 for the “cookies”miscellaneous group item is 60, and the sales quantity 204 for chocolatechip cookies, as recorded at the point-of-sale, is 30. Based on thesedata, the disambiguated sales quantity 314 for chocolate chip cookies is60.

FIG. 8 provides a comparison of the disambiguated sales quantities 314of FIG. 7 with estimated sales quantities based on a proportionateallocation of the miscellaneous group item sales quantities 204 amongthe sales quantities 202 for the various individual items. As may beobserved, the estimated sales quantity for oatmeal cookies is 27% higherthan the actual, disambiguated sales quantity 314. Even more significantis the estimated sales quantity for sugar cookies, which is 42% lessthan the actual, disambiguated sales quantity 314.

In view of the foregoing, a forecast 110 based on the estimated salesquantities, as in conventional approaches, would be highly inaccurate,resulting in the production of too many of some varieties (e.g., peanutbutter cookies and sugar cookies), while not producing enough of othervarieties (e.g., chocolate chip cookies and oatmeal cookies).

FIG. 9 is a flowchart of a method 900 for disambiguating point-of-saledata that summarizes techniques described above. For simplicity, as inFIGS. 6 and 7, only one miscellaneous group item is referenced, althoughthe invention is not limited in this respect.

Initially, the system 300 receives 902 historical point-of-sale sales202, 204 from the POS feed 106. Thereafter, for each miscellaneous groupitem 904, and then for each individual item 906, the system 300calculates 908 an item index 308 for the individual item by dividing aquantity of the individual item produced but not accounted for inpoint-of-sale quantities for the individual item and anynon-point-of-sale transfers (e.g., invoice orders, shrink/waste) by thesum of all individual items produced but not accounted for.

Next, the system 300 computes 910 a disambiguated sales quantity 314 forthe individual item (representing a quantity sold) by adding the salesquantity 202 for the individual item to a product of the item index forthe individual item and the sales quantity 204 for the miscellaneousgroup item. Once all of the disambiguated sales quantities 314 have beencalculated, the system 300 provides 912 the disambiguated salesquantities 314 to the forecasting engine 102.

While specific embodiments and applications of the present inventionhave been illustrated and described, it is to be understood that theinvention is not limited to the precise configuration and componentsdisclosed herein. Various modifications, changes, and variationsapparent to those of skill in the art may be made in the arrangement,operation, and details of the methods and systems of the presentinvention disclosed herein without departing from the spirit and scopeof the present invention.

What is claimed is:
 1. A method comprising: receiving one or moremeasured values, each measured value indicating a quantity of salesallocated to a respective individual item; receiving an unallocatedvalue indicating a quantity of sales allocated to an undifferentiatedgrouping of a plurality of the individual items; calculating, for eachindividual item of the plurality of the individual items associated withthe undifferentiated grouping, a fraction of the undifferentiatedgrouping attributable to the respective individual item; and estimating,for at least one of the plurality of the individual items, a total salesvalue based at least in part upon a respective measured value and arespective fraction of the undifferentiated grouping attributable to therespective individual item.
 2. The method of claim 1, furthercomprising: providing the total sales value for the at least one of theplurality of the individual items to a sales forecasting system.
 3. Themethod of claim 1, further comprising: scrubbing the one or moremeasured value to remove a portion of the quantity of sales allocated tothe respective individual item that are deemed to potentially distortthe respective estimate of total sales value.
 4. The method of claim 3,wherein scrubbing comprises removing a portion of the quantity of salesthat are associated with a special order of the respective individualitem.
 5. The method of claim 1, wherein calculating a fraction of theundifferentiated grouping attributable to the respective individual itemcomprises: determining a production value for each individual item;determining an un-sold value for each individual item; calculating, foreach respective individual item, an item's unallocated value bysubtracting from the production value, associated with the respectiveindividual item, at least the un-sold value, associated with therespective individual item, and the measured value, associated with therespective individual item; and calculating, for each respectiveindividual item, the fraction of the undifferentiated groupingattributable to the respective individual item by dividing theunallocated value, associated with the respective individual item, by asum of all the unallocated values of the individual items.
 6. The methodof claim 5, wherein estimating, for at least one of the plurality of theindividual items, a total sales value further comprises: determining atransferred value for each of the at least one individual item, whereinthe transferred value indicates a quantity that is not included in therespective measured value; and wherein calculating, for each respectiveindividual item, an item's unallocated value also comprises subtractingthe transferred value associated with the respective individual itemfrom the production value, associated with the respective individualitem.
 7. The method of claim 1, wherein calculating a fraction of theundifferentiated grouping attributable to the respective individual itemcomprises: determining the fraction of the undifferentiated groupingattributable to the respective individual item based, at least in part,upon a quantity of each individual item produced and an amount of eachindividual item directly accounted for.
 8. The method of claim 1,wherein estimating, for at least one of the plurality of the individualitems, a total sales value comprises: computing anapproximately-allocated value for each of the at least one individualitem, by allocating to each of the individual items a portion of theunallocated value based upon the respective fraction of theundifferentiated grouping attributable to the respective individualitem; and adding, for each of the at least one individual item, therespective approximately-allocated value to a respective measured valueto create the total sales value associated with the respectiveindividual item.
 9. The method of claim 1, wherein both the measuredvalue and the unallocated value for each respective individual item areassociated with a same period of time.
 10. The method of claim 1,wherein at least one measured value is associated with a grouped item,wherein the grouped item comprises a plurality of other individualitems; and wherein receiving one or more measured values comprisesallocating the measured value associated with the grouped item to two ormore measured values associated with the other individual items includedby the grouped item.
 11. A computer program product for estimating salesinformation, the computer program product being tangibly andnon-transitorily embodied on a computer-readable medium and includingexecutable code for execution on a data processing apparatus, theexecutable code comprising: instructions to receive one or more measuredvalues, each measured value indicating a quantity of sales allocated toa respective individual item; instructions to receive an unallocatedvalue indicating a quantity of sales allocated to an undifferentiatedgrouping of a plurality of the individual items; instructions tocalculate, for each individual item of the plurality of the individualitems associated with the undifferentiated grouping, a fraction of theundifferentiated grouping attributable to the respective individualitem; and instructions to estimate, for at least one of the plurality ofthe individual items, a total sales value, based at least in part upon arespective measured value and a respective fraction of theundifferentiated grouping attributable to the respective individualitem.
 12. The computer program product of claim 11, wherein theexecutable code further comprises: instructions to cause the dataprocessing apparatus to provide the total sales values for each of theplurality of the individual items to a sales forecasting system.
 13. Thecomputer program product of claim 11, wherein the executable codefurther comprises: instructions to cause the data processing apparatusto scrub the one or more measured value to remove a portion of thequantity of sales allocated to respective individual item that aredeemed to potentially distort the respective estimate of total salesvalue.
 14. The computer program product of claim 11, wherein theexecutable code further comprises: instructions to cause the dataprocessing apparatus to calculate a fraction of the undifferentiatedgrouping attributable to the respective individual item by determiningthe fraction of the undifferentiated grouping attributable to therespective individual item based, at least in part, upon a quantity ofeach individual item produced and an amount of each individual itemdirectly accounted for.
 15. The computer program product of claim 1,wherein the executable code further comprising: instructions to causethe data processing apparatus to estimate a total sales values for eachof the plurality of the individual items by: computing anapproximately-allocated value for each of the at least one individualitem, by allocating to each of the individual items a portion of theunallocated value based upon the respective fraction of theundifferentiated grouping attributable to the respective individualitem; and adding, for each of the at least one individual item, therespective approximately-allocated value to a respective measured valueto create the total sales value associated with the respectiveindividual item.
 16. An apparatus comprising: an item indexer configuredto: receive one or more measured values, each measured value indicatinga quantity of sales allocated to a respective individual item, receivean unallocated value indicating a quantity of sales allocated to anundifferentiated grouping of a plurality of the individual items, andcalculate, for each individual item of the plurality of the individualitems associated with the undifferentiated grouping, a fraction of theundifferentiated grouping attributable to the respective individualitem; and a sales disambiguator configured to estimate, for at least oneof the plurality of the individual items, a total sales value based atleast in part upon a respective measured value and a respective fractionof the undifferentiated grouping attributable to the respectiveindividual item.
 17. The apparatus of claim 16, further comprising: aproduction forecaster configured to predict consumer demand for eachindividual item based, at least in part, upon the total sales value foreach of at least one of the plurality of the individual items estimatedby the sales disambiguator.
 18. The apparatus of claim 16, furthercomprising: a data scrubber configured to scrub the one or more measuredvalues to remove a portion of the quantity of sales allocated torespective individual item that are deemed to potentially distort therespective estimate of total sales value.
 19. The apparatus of claim 16,wherein the item indexer is configured to calculate a fraction of theundifferentiated grouping attributable to the respective individual itembased, at least in part, upon a quantity of each individual itemproduced and an amount of each individual item directly accounted for.20. The apparatus of claim 16, wherein the sales disambiguator isconfigured to estimate, for at least one of the plurality of theindividual items, a total sales value by: computing anapproximately-allocated value for each of the at least one of theplurality of the individual items, by allocating to each of the at leastone of the plurality of the individual items a portion of theunallocated value based upon the respective fraction of theundifferentiated grouping attributable to the respective individualitem; and adding, for the at least one of the plurality of theindividual item, the respective approximately-allocated value to arespective measured value to create the total sales value associatedwith the respective individual item.